package com.test;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.dalin.common.utils.FileUtils;
import com.dalin.common.utils.StringUtils;
import com.dalin.common.utils.TextUtils;

public class TempMain {
	public static void main(String[] args) {
		List<String> messageList = new ArrayList<String>();
		messageList.add("/home/kernelin/mydata/ews/teraproc/api/src/main/resources/message_zh_CN.properties");
		messageList.add("/home/kernelin/mydata/ews/teraproc/admin/src/main/webapp/i18n/message_zh_CN.properties");
		messageList.add("/home/kernelin/mydata/ews/teraproc/portal/src/main/webapp/i18n/message_zh_CN.properties");
		messageList.add("/home/kernelin/mydata/ews/teraproc/vdiskplugin/export/i18n/message_zh_CN.properties");
		messageList.add("/home/kernelin/mydata/ews/teraproc/vmplugin/export/i18n/message_zh_CN.properties");
		messageList.add("/home/kernelin/mydata/ews/teraproc/appclusterplugin/export/i18n/message_zh_CN.properties");
		try {
			List<String> newpList = new ArrayList<String>();
			for (String path : messageList) {
				String epath = path.replace("message_zh_CN", "message_en_US");
				List<String> newel = new ArrayList<String>();
				List<String> l = TextUtils.readByList(new File(path), null);
				List<String> el = TextUtils.readByList(new File(epath), null);
				for (String es : el) {
					if (!es.contains("=")) {
						newel.add(es);
						continue;
					}
					String s0 = es.split("=")[0];
					boolean exist = false;
					for (String s : l) {
						if (!s.contains("=")) continue;
						if(s0.equals(s.split("=")[0])) exist = true;
					}
					if (exist) newel.add(es);
				}
				StringBuffer sb = new StringBuffer("");
				for (String s : newel) {
					sb.append(s+"\n");
				}
				TextUtils.overwriteToText(sb.toString(), new File(epath));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void uniqe() {
		//$.i18nProp("license.prompt
		List<String> messageList = new ArrayList<String>();
		messageList.add("/home/kernelin/mydata/ews/teraproc/api/src/main/resources/message_zh_CN.properties");
		messageList.add("/home/kernelin/mydata/ews/teraproc/admin/src/main/webapp/i18n/message_zh_CN.properties");
		messageList.add("/home/kernelin/mydata/ews/teraproc/portal/src/main/webapp/i18n/message_zh_CN.properties");
		messageList.add("/home/kernelin/mydata/ews/teraproc/vdiskplugin/export/i18n/message_zh_CN.properties");
		messageList.add("/home/kernelin/mydata/ews/teraproc/vmplugin/export/i18n/message_zh_CN.properties");
		messageList.add("/home/kernelin/mydata/ews/teraproc/appclusterplugin/export/i18n/message_zh_CN.properties");
		try {
			String path = messageList.get(3);
			List<File> afList = FileUtils.getAllFiles(new File("/home/kernelin/mydata/ews/teraproc/vdiskplugin/export"));
			//for (String path : messageList) {
				Map<String, String> tmpMap = new HashMap<String, String>();
				List<String> newpList = new ArrayList<String>();
				List<String> l = TextUtils.readByList(new File(path), null);
				//List<String> l1 = TextUtils.readByList(new File(messageList.get(3)), null);
				for (String ss : l) {
					boolean exist=false;
					if (!ss.contains("=")) {
						newpList.add(ss);
						continue;
					}
					String s0 = ss.split("=")[0];
					String s = ss.split("=")[1];
					if (tmpMap.get(s)!=null) {
						exist =true;
						System.out.println(path +":" +ss); // 重复的key值
						for (File f : afList) {
							boolean isoverwrite=false;
							if (f.getAbsolutePath().equals(path)
									|| f.getAbsolutePath().contains("en_US")) continue;
							List<String> srcList = TextUtils.readByList(f, null);
							for (int i =0; i< srcList.size();i++) {
								String srcStr=srcList.get(i);
								if (srcStr.contains("$.i18nProp(\""+s0)
										||srcStr.contains("text:"+s0)
										||srcStr.contains("html:"+s0)) {
									isoverwrite = true;
									System.out.print("\n"+srcStr+"-->");
									srcStr = srcStr.replaceAll(s0, tmpMap.get(s));
									System.out.println(srcStr);
									srcList.remove(i);
									srcList.add(i, srcStr);
								}
							}
							StringBuffer sbb = new StringBuffer("");
							for (String sa : srcList) {
								sbb.append(sa+"\n");
							}
							if (isoverwrite) TextUtils.overwriteToText(sbb.toString(), f);
						}
					}
					tmpMap.put(s, s0);
					if (!exist) newpList.add(ss);
				}
				System.out.println(l.size() +">"+newpList.size());
				StringBuffer sb = new StringBuffer("");
				for (String s : newpList) {
					sb.append(s+"\n");
				}
				TextUtils.overwriteToText(sb.toString(), new File(path));
			//}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("over");
	}
	
	public static void buildHljPatch() {
		String sr = "/tmp/dd"; // PATCH SOURCE
		File file = new File(sr);
		String cls = "/tmp/core-1.3.0-SNAPSHOT"; // PATCH CLASS
		File clsFile = new File(cls);
		String tr = "/tmp/ddt";
		File tf = new File(tr);
		try {
			List<File> list = FileUtils.getAllFiles(file);
			
			for (File f : list) {
				String dd = f.getAbsolutePath().substring(sr.length());
				File tmpFile = new File(cls + dd.replace(".java", ".class"));
				FileUtils.saveAsFile(tmpFile, new File(tmpFile.getAbsolutePath()
						.replace(cls, tr)));
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	private static void urlConnectionPost() {
	    StringBuilder responseBuilder = null;
	    BufferedReader reader = null;
	    OutputStreamWriter wr = null;

	    URL url;
	    try {
	        url = new URL("http://njl:8080/api/mock/user/login/?username=admin&password=password");
	        URLConnection conn = url.openConnection();
	        conn.setDoOutput(true);
	        conn.setConnectTimeout(1000 * 5);
	        wr = new OutputStreamWriter(conn.getOutputStream());
	        wr.write("");
	        wr.flush();

	        // Get the response
	        reader = new BufferedReader(new InputStreamReader(conn
	                .getInputStream()));
	        responseBuilder = new StringBuilder();
	        String line = null;
	        while ((line = reader.readLine()) != null) {
	            responseBuilder.append(line + "\n");
	        }
	        wr.close();
	        reader.close();

	        System.out.println(responseBuilder.toString());
	    } catch (IOException e) {
	        // TODO Auto-generated catch block
	        e.printStackTrace();
	    }
	}
	public static void re(String jspName) {
		try {
			InputStream in = new BufferedInputStream(new FileInputStream(new File("/home/kernelin/mydata/ews/NewSkyFormPortal Main/SkyFormPortal/target/classes/message_zh_CN.properties")));
			ResourceBundle rb = new PropertyResourceBundle(in);
				File file = new File("/home/kernelin/mydata/ews/NewSkyFormPortal Main/SkyFormPortal/src/main/webapp/newui/jsp/"+jspName);
		List<String> dataList = TextUtils.readByList(file, "UTF-8");
		for (String s : dataList) {
			Pattern p = Pattern.compile("<fmt:message key=\"key\\d+\" />");
			Matcher m = p.matcher(s);
			while (m.find()) {
				String value = m.group(0);
				String key = value.substring(18).replace("\" />", "");
				s = s.replace(value, rb.getString(key));
			}
			TextUtils.appendToText(s, new File("/tmp/ccc/"+jspName));
		}
		System.out.println(jspName+"over");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static void i18n() {
		int keyIndex = 0;
		try {
			String srcPath = "/home/kernelin/mydata/ews/NewSkyFormPortal Main/SkyFormPortal/target/SkyFormPortal/";
			String targetPath = "/tmp/";
			File enFile = new File("/tmp/message_en_US.properties");
			File cnFile = new File("/tmp/message_zh_CN.properties");
			enFile.createNewFile();
			cnFile.createNewFile();
			List<String> strList = null;
			String ns = null;
			Pattern p = null;
			Matcher m = null;
			String value = null;
			String key = null;
			File f = null;
			List<File> dataList = FileUtils.getAllDirsAndFiles(new File(srcPath + "newui/jsp"));
			File df = null;
			for (int j = 0; j < dataList.size(); j++) {
				System.out.println("j ==========="+j);
//				if (j == 3) {
//					break;
//				}
				df = dataList.get(j);
				f = new File(targetPath + df.getAbsolutePath().replace(srcPath, ""));
				System.out.println(f.getAbsolutePath());
				if (df.isDirectory()) {
					f.mkdirs();
				} else { 
					if (!f.getName().endsWith(".jsp")) continue;
					f.createNewFile();
					TextUtils.appendToText("\n#"
							+f.getAbsolutePath().replace(srcPath, ""), cnFile);
					TextUtils.appendToText("\n#"
							+f.getAbsolutePath().replace(srcPath, ""), enFile);
					
					strList = TextUtils.readByList(df, "utf-8");
					for (int i = 0; i < strList.size(); i++) {
						p = Pattern.compile("[\u4e00-\u9fa5, ，。]+");
						ns = strList.get(i);
						if (ns.trim().indexOf("//") > -1) {
							TextUtils.appendToText(ns, f);
							continue; 
						}
						m = p.matcher(strList.get(i));
						while (m.find()) {
							value = m.group(0);
							System.out.println(ns + "============"+ value);
							key = "key" + keyIndex++;
							ns = ns.replace(value, "<fmt:message key=\"" + key + "\" />");
							
							TextUtils.appendToText("#"+value+"\n"+key + "="
									+ StringUtils.getUnicodeStr(value), cnFile);
							TextUtils.appendToText("#"+value+"\n"+key + "="
									+ StringUtils.chineseToPinyin(value), enFile);
						}
						TextUtils.appendToText(ns, f);
						if (i == 0) {
							TextUtils.appendToText("<%@ include file=\"/newui/include/i18nHeader.inc\" %>", f);
						}
					}
				}
				System.out.println(df.getAbsolutePath());
			}
			
			
			
//			String str = "123abc这个中文cde123abc也要提取123ab";
//			Pattern p = null;
//			Matcher m = null;
//			String value = null;
//			p = Pattern.compile("([^x00-xff]+)");
//			m = p.matcher(str);
//			while (m.find()) {
//				value = m.group(0);
//				System.out.println(StringUtils.getUnicodeStr(value));
//			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void a() {
		Date d = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");// 其中yyyy-MM-dd是你要表示的格式
		// 可以任意组合，不限个数和次序；具体表示为：MM-month,dd-day,yyyy-year;kk-hour,mm-minute,ss-second;
		String str = sdf.format(d);
		System.out.println("The date is : " + str);
	}

	public static void b() {
		Date d = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");// 其中yyyy-MM-dd是你要表示的格式
		// 可以任意组合，不限个数和次序；具体表示为：MM-month,dd-day,yyyy-year;kk-hour,mm-minute,ss-second;
		String str = sdf.format(d);
		System.out.println("The date is : " + str);
	}

	/*
	 * long l1 = System.currentTimeMillis(); String s =
	 * "回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额回顾一年的历程，我们的产品有了长足的进步，功能和性能都有了很大的改善。去年的同一时间，我们正在为网管中心云管理平台一期事宜弄的焦头烂额"
	 * ; int len = 5000000; int beginNum = 3000000; try { FileWriter fw = new
	 * FileWriter(new File("F:/bigData.txt"), true); BufferedWriter bw = new
	 * BufferedWriter(fw); for (int i = beginNum; i < beginNum + len; i++) {
	 * bw.write(i + s); if (i % 100 == 0) { System.out.println(i); } }
	 * bw.write(PropertyConst.LINE_SEPARATOR); bw.flush(); bw.close();
	 * fw.close(); long l2 = (System.currentTimeMillis() - l1);
	 * System.out.println("use time:" + l2 + "ms");
	 * System.out.println("use time:" + l2 / 1000 + "s");
	 * System.out.println("use time:" + l2 / 60000 + "m"); } catch (Exception e)
	 * { e.printStackTrace(); }
	 */
	public static String getResBizCodeValueByType(String type) {
		String s1 = "123";
		String s2 = "123";
		String s3 = new String("123");
		String s4 = new String("123");
		System.out.println(s1 == s2);
		System.out.println(s3 == s2);
		System.out.println(s3 == s4);
		return null;
	}

	public static void dd(String[] args) {
		System.out.println(Thread.currentThread().getStackTrace()[0]);
		System.out.println(Thread.currentThread().getStackTrace()[1]);
	}

	public static Date getDate(String dateStr) {
		if (StringUtils.isBlank(dateStr))
			return null;
		dateStr = dateStr.trim();
		dateStr = dateStr.replaceAll("\\.|-| |:", "");
		SimpleDateFormat df = null;
		if (dateStr.length() > 14) {
			dateStr = dateStr.substring(0, 14);
		}

		if (dateStr.matches("[\\d]{4}")) {
			df = new SimpleDateFormat("yyyy");
		} else if (dateStr.matches("[\\d]{4}[\\d]{2}")) {
			df = new SimpleDateFormat("yyyyMM");
		} else if (dateStr.matches("[\\d]{4}[\\d]{2}[\\d]{2}")) {
			df = new SimpleDateFormat("yyyyMMdd");
		} else if (dateStr.matches("[\\d]{4}[\\d]{2}[\\d]{2}[\\d]{2}")) {
			df = new SimpleDateFormat("yyyyMMddHH");
		} else if (dateStr.matches("[\\d]{4}[\\d]{2}[\\d]{2}[\\d]{2}[\\d]{2}")) {
			df = new SimpleDateFormat("yyyyMMddHHmm");
		} else if (dateStr
				.matches("[\\d]{4}[\\d]{2}[\\d]{2}[\\d]{2}[\\d]{2}[\\d]{2}")) {
			df = new SimpleDateFormat("yyyyMMddHHmmss");
		} else {
			return null;
		}
		try {
			return df.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}
}

class Bo {
	public String a = "23";

	@Override
	public String toString() {
		return "aaaaaaaaaa";
	}
}
